Traditionally when applications are developed, a developer first makes a decision as to what kind of platform to use (e.g. Windows®, Linux®). Decisions also have to be made about whether an application will be web-based or desktop based, whether it will run in a server-client environment or as standalone application, and what kind of database system the application will utilize. Once the relevant decisions are made the development commences. FIG. 1 shows this process conceptually. Problems arise when requirements change over time and when suddenly a desktop application has to be turned into a web-application. Problems also arise if a developer is required to move to a different database system. Frequently such changes require major restructuring and involve significant costs.
It is possible to develop applications that can run across operating system platforms. It is also possible to develop applications that abstract the communication with an underlying database system and are thus portable across database platforms. Applications that are capable of abstracting different presentation media are rare if not nonexistent. Abstracting presentation media means separating software development to a maximum degree from the medium on which it will be used, whether it is a computer desktop, a web browser or a mobile device. This type of abstraction is challenging in particular because by nature these applications behave differently. For instance a web-application is inherently stateless. In order to provide a presentation medium abstraction layer, these differences have to be taken into account and reconciled.